查看原文
其他

NLP之淘宝商品评论情感分析

2017-05-30 王大伟 Python爱好者社区

(点击上方Python爱好者社区,可快速关注)


作者:王大伟

博客专栏:https://www.hellobi.com/u/wangdawei/articles

Python爱好者社区  唯一小编  

前言

最近学习NLP,还在初级阶段,上次jieba分词那篇写完,还在学习哈工大的pyltp。

发现一个比较有趣的中文类库:snownlp

SnowNLP是一个Python写的类库,可以方便的处理中文文本内容。

使用环境

Python3

Features

  • 中文分词(Character-Based Generative Model)

  • 词性标准(TnT 3-gram 隐马)

  • 情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的一些可能效果不是很好,待解决)

  • 文本分类(Naive Bayes)

  • 转换成拼音

  • 繁体转简体

  • 提取文本关键词(TextRank算法)

  • 提取文本摘要(TextRank算法)

  • tf,idf

  • Tokenization(分割成句子)

  • 文本相似(BM25)

  • 支持python3

安装snownlp

在cmd下输入:pip3 install snownlp

(ps:为什么用pip3而不用pip,在之前的文章中已经说过原因)


如图,我之前已经安装过

snownlp分词

from snownlp import SnowNLP
s = SnowNLP(u'一次满意的购物')
s.words

['一', '次', '满意', '的', '购物']

PS:这里使用的是它自带的词典

snownlp情感分析

这里的情感分析结果是【0,1】区间上的一个值,越接近1,情感越积极,越接近0,情感越消极。

或者可以理解为positive的概率。

s.sentiments#positive的概率

0.8463107097139686

汉语转拼音

s.pinyin

['yi', 'ci', 'man', 'yi', 'de', 'gou', 'wu']

繁体字转简体

s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
s.han

'「繁体字」「繁体中文」的叫法在台湾亦很常见。'

提取文章关键词

text = u'''
自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。因此,自然语言处理是与人机交互的领域有关的。在自然语言处理面临很多挑战,包括自然语言理解,因此,自然语言处理涉及人机交互的面积。在NLP诸多挑战涉及自然语言理解,即计算机源于人为或自然语言输入的意思,和其他涉及到自然语言生成。
现代NLP算法是基于机器学习,特别是统计机器学习。机器学习范式是不同于一般之前的尝试语言处理。语言处理任务的实现,通常涉及直接用手的大套规则编码。
许多不同类的机器学习算法已应用于自然语言处理任务。这些算法的输入是一大组从输入数据生成的"特征"。一些最早使用的算法,如决策树,产生硬的if-then规则类似于手写的规则,是再普通的系统体系。然而,越来越多的研究集中于统计模型,这使得基于附加实数值的权重,每个输入要素柔软,概率的决策。此类模型具有能够表达许多不同的可能的答案,而不是只有一个相对的确定性,产生更可靠的结果时,这种模型被包括作为较大系统的一个组成部分的优点。
自然语言处理研究逐渐从词汇语义成分的语义转移,进一步的,叙事的理解。然而人类水平的自然语言处理,是一个人工智能完全问题。它是相当于解决中央的人工智能问题使计算机和人一样聪明,或强大的AI。自然语言处理的未来一般也因此密切结合人工智能发展。
'''


s = SnowNLP(text)

s.keywords(4)#提取关键词

['语言', '自然', '计算机', '涉及']

总结文章

s.summary(3)

['许多不同类的机器学习算法已应用于自然语言处理任务', '在NLP诸多挑战涉及自然语言理解', '包括自然语言理解']

切分为句子

s.sentences['自然语言处理(NLP)是计算机科学',
'人工智能',
'语言学关注计算机和人类(自然)语言之间的相互作用的领域',
'因此',
'自然语言处理是与人机交互的领域有关的',
'在自然语言处理面临很多挑战',
'包括自然语言理解',
'因此',
'自然语言处理涉及人机交互的面积',
'在NLP诸多挑战涉及自然语言理解',
'即计算机源于人为或自然语言输入的意思',
'和其他涉及到自然语言生成',
'现代NLP算法是基于机器学习',
'特别是统计机器学习',
'机器学习范式是不同于一般之前的尝试语言处理',
'语言处理任务的实现',
'通常涉及直接用手的大套规则编码',
'许多不同类的机器学习算法已应用于自然语言处理任务',
'这些算法的输入是一大组从输入数据生成的"特征"',
'一些最早使用的算法',
'如决策树',
'产生硬的if-then规则类似于手写的规则',
'是再普通的系统体系',
'然而',
'越来越多的研究集中于统计模型',
'这使得基于附加实数值的权重',
'每个输入要素柔软',
'概率的决策',
'此类模型具有能够表达许多不同的可能的答案',
'而不是只有一个相对的确定性',
'产生更可靠的结果时',
'这种模型被包括作为较大系统的一个组成部分的优点',
'自然语言处理研究逐渐从词汇语义成分的语义转移',
'进一步的',
'叙事的理解',
'然而人类水平的自然语言处理',
'是一个人工智能完全问题',
'它是相当于解决中央的人工智能问题使计算机和人一样聪明',
'或强大的AI',
'自然语言处理的未来一般也因此密切结合人工智能发展']

接下来,进入正题!

from snownlp import seg#现在提供训练的包括分词,词性标注,情感分析,而且都提供了我用来训练的原始文件 以分词为例 分词在snownlp/seg目录下

用data.txt可以用于训练


seg.train('C:\Anaconda3\Lib\site-packages\snownlp\seg\data.txt')
seg.save('seg.marshal')

这样训练好的文件就存储为seg.marshal

训练情感

from snownlp import sentimentsentiment.train('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/negtive1.txt','C:/Anaconda3/Lib/site-packages/snownlp/sentiment/positive1.txt')#注意路径斜线别写错
sentiment.save('C:/Anaconda3/Lib/site-packages/snownlp/sentiment/sentiment2.marshal')



这些训练内容是自己找的,可以是情感积极消极词库,也可以是爬到的淘宝积极消极情感文档。






训练好了就可以计算情感啦~

q = SnowNLP(u'宝贝真的很不错,,这是我第二次买了,我的朋友都好喜欢,穿上特别漂亮!好性感!质量好好!大爱!')
q.sentiments

0.9999498509266149

q = SnowNLP(u'非常的好,穿上美美哒,喜欢的美美放心购买好了,料子穿着很舒。')
q.sentiments

0.9999498509266149

q = SnowNLP(u'布料不好,不建议购买')
q.sentiments

0.367781463800559

q = SnowNLP(u'好重的味道,好难闻,而且严重掉色,请大家还是要看过再买吧')
q.sentiments

0.2997962754770197

q = SnowNLP(u'太失望了')
q.sentiments

0.1322809488637342

q = SnowNLP('东西很好')
q.sentiments

0.7811183413508497

q = SnowNLP('辣鸡店主,败我钱财,毁我青春')
q.sentiments

0.9774554349848498


最后这个不科学。。。【捂脸】

一定是训练集太小啦~,还需要扩充训练集

说到做到,新福利来啦:

关注公众号,在公众号菜单点击"免费听课",即可参与活动免费听19.9元收费课程,当然,壕大大可以直接购买听课啦。

壕大大入口:https://edu.hellobi.com/course/186,点击文末阅读原文可购买

本次主打课程:

Hellobi Live | 6月6日 自然语言处理之-基于深度学习技术的聊天机器人实现

课程名称:

自然语言处理之-基于深度学习技术的聊天机器人实现

课程背景:

NLP是一个很大的领域,自成一系,本次课程通过一个企业级案例(聊天机器人)带领大家从了解项目场景开始一步步搭建,最后演示聊天机器人实例。通过本课程的学习,让你一举打开NLP的大门。

主讲老师:

Kenny,计算机硕士,曾在某上市公司和世界500强公司分别担任智能算法工程师,高级算法挖掘工程师,具有多年的大数据项目开发实战经验,坚持在代码开发的一线,设计和实现了多个大数据项目。

Kenny博客专栏:https://ask.hellobi.com/blog/KennySayHi

直播时间:

2017年6月6日晚上8点到10点

课程内容:

1、 聊天机器人概括,应用场景,分类,技术发展路线及基于深度学习技术聊天机器人

2、 基于深度学习聊天机器人训练数据收集,清洗

3、 特征工程:文本数据预处理,特征化和数值化后转化为可训练的数据

4、 LSTM组件介绍

5、 Seq2seq算法介绍

6、 Seq2seq模型的优缺点和改进


Python爱好者社区


为大家提供与Python相关的最新技术和资讯


长按指纹 > 识别图中二维码 > 添加关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存